package com.dahuan.util;

public class ETLUtil {

    /**
     * 1,过滤掉长度不够的，小于9个字段
     * 2,去掉类别字段的空格
     * 3,修改相关视频ID字段的分隔符，有 ‘\t’ 替换为 ‘&’
     *
     * @param oriStr:输入参数的原始数据，
     * @return : 过滤后的数据
     */
    public static String etlStr(String oriStr) {
        /**
         * StringBuffer是可变类，
         * 和线程安全的字符串操作类，
         * 任何对它指向的字符串的操作都不会产生新的对象。
         * 每个StringBuffer对象都有一定的缓冲区容量，
         * 当字符串大小没有超过容量时，
         * 不会分配新的容量，
         * 当字符串大小超过容量时，
         * 会自动增加容量
         */

        StringBuffer sb = new StringBuffer();

        //1.切割oriStr
        String[] fields = oriStr.split( "\t" );
        //2.对字段长度进行过滤
        if (fields.length < 9) {
            return null;
        }

        //3.去掉类别字段的空格 (类别字段下标是4,故索引为3)
        fields[3] = fields[3].replaceAll( " ", "" );//替换


        //4.修改相关视频ID字段的分隔符，有 ‘\t’ 替换为 ‘&’
        for (int i = 0; i < fields.length; i++) {

            //对非相关ID进行处理
            if (i < 9){
                if (i == fields.length - 1){
                    sb.append( fields[i] );
                }else {
                    sb.append( fields[i]).append("\t");
                }
            }else {
                //对相关ID字段进行处理
                if (i == fields.length - 1){
                    sb.append( fields[i] );
                }else {
                    sb.append( fields[i]).append("&");
                }
            }
        }

        //5.返回结果
        return sb.toString();
    }

}
